package com.lb.ai.common.request;

import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 分页请求参数
 * 在业务请求参数的基础上，添加了分页相关的字段
 * 用于需要分页查询的场景
 *
 * @param <T> 业务参数类型，通常是查询条件对象
 * @author LiuB
 * @see BaseRequest
 * @see BusinessRequest
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class PageRequest<T> extends BusinessRequest<T> {
    private static final long serialVersionUID = 1L;

    /**
     * 页码，从1开始
     * 默认值为1，表示第一页
     */
    private Integer pageNum = 1;

    /**
     * 每页大小
     * 默认值为10，表示每页显示10条数据
     */
    private Integer pageSize = 10;

    /**
     * 排序字段
     * 可以指定按照哪个字段进行排序
     * 例如：id、createTime等
     */
    private String orderBy;

    /**
     * 是否升序
     * true表示升序（ASC），false表示降序（DESC）
     * 默认为true
     */
    private Boolean asc = true;

    /**
     * 获取偏移量
     * 用于数据库分页查询
     * 计算公式：(页码 - 1) * 每页大小
     *
     * @return 数据偏移量
     */
    public Integer getOffset() {
        return (pageNum - 1) * pageSize;
    }
} 